package com.jlboot.test;

import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.wall.WallFilter;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jlboot.core.ConfigUtil;

import javax.sql.DataSource;

/**
 * @author wangsanfei
 * @version 1.0
 * Create by 2024/1/1 19:33
 */
public class Gen {

    /**
     * 实际使用修改此处代码，返回正确的 DataSource 对象
     */
    public static DataSource getDataSource() {
        PropKit.use("config-dev.txt");

        String MYSQL_URL = ConfigUtil.getProperty("MYSQL_URL");
        String MYSQL_USERNAME = ConfigUtil.getProperty("MYSQL_USERNAME");
        String MYSQL_PWD = ConfigUtil.getProperty("MYSQL_PWD");
        DruidPlugin dp = new DruidPlugin(MYSQL_URL, MYSQL_USERNAME, MYSQL_PWD);
        /////////////////////////////////
        dp.addFilter(new StatFilter()); //sql监控
        dp.addFilter(new WallFilter()); //防止sql注入
        WallFilter wall = new WallFilter();
        wall.setDbType("mysql"); //mysql
        dp.addFilter(wall);

        dp.start();
        return dp.getDataSource();

    }


    public static void main(String[] args) {
        // model 所使用的包名 (MappingKit 默认使用的包名)
        String modelPackageName = "com.xxx.common.model";

// base model 所使用的包名
        String baseModelPackageName = modelPackageName + ".base";

// base model 文件保存路径
// 注意从 jfinal 4.9.12 版开始，PathKit.getWebRootPath() 在此的用法要改成 System.getProperty("user.dir")
        String baseModelOutputDir = System.getProperty("user.dir") + "/src/main/java/" + baseModelPackageName.replace('.', '/');

// model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
        String modelOutputDir = baseModelOutputDir + "/..";

        System.out.println("输出路径：" + baseModelOutputDir);

// 创建生成器
        Generator gen = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);

// 设置数据库方言
        gen.setDialect(new MysqlDialect());

// 在 getter、setter 方法上生成字段备注内容
        gen.setGenerateRemarks(true);

// 开始生成代码
        gen.generate();
    }


}
